Implementing Action Priority
#udemy
#RPG_Core_Combat_Creator
#Unity
Priority
現在、
IntaractWithCombat()
IntaractWithMovement()
の二種類のメソッドがあり、どちらも同時に実行する。
どちらかだけ実行したいので、
Combatに失敗したときだけMovementを実行する
code: RPG.fs
type PlayerController() =
inherit MonoBehaviour()
...
let orAction action1 action2 =
let innerAction () =
match action1 () with
| Error (_) -> action2 ()
| ok -> ok
innerAction
let (<|>) = orAction
let run action = action ()
member private this.Update() =
if Input.GetMouseButton(0) then
run
(this.IntaractWithCombat
<|> this.IntaractWithMovement
<|> this.NothingTodo)
|> ignore
else
()
<|>演算子を定義
actionを2つとって、1つのアクションに合成する。
Resultモナドで左辺のアクションがエラーのときに右辺のアクションを実行する。